{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19",
    "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/kaggle/input/unsw-nb15/UNSW-NB15_3.csv\n",
      "/kaggle/input/unsw-nb15/NUSW-NB15_features.csv\n",
      "/kaggle/input/unsw-nb15/UNSW-NB15_LIST_EVENTS.csv\n",
      "/kaggle/input/unsw-nb15/UNSW_NB15_testing-set.csv\n",
      "/kaggle/input/unsw-nb15/UNSW-NB15_4.csv\n",
      "/kaggle/input/unsw-nb15/UNSW-NB15_1.csv\n",
      "/kaggle/input/unsw-nb15/UNSW_NB15_training-set.csv\n",
      "/kaggle/input/unsw-nb15/UNSW-NB15_2.csv\n"
     ]
    }
   ],
   "source": [
    "# This Python 3 environment comes with many helpful analytics libraries installed\n",
    "# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n",
    "# For example, here's several helpful packages to load\n",
    "\n",
    "import numpy as np # linear algebra\n",
    "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n",
    "\n",
    "# Input data files are available in the read-only \"../input/\" directory\n",
    "# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n",
    "\n",
    "import os\n",
    "for dirname, _, filenames in os.walk('/kaggle/input'):\n",
    "    for filename in filenames:\n",
    "        print(os.path.join(dirname, filename))\n",
    "\n",
    "# You can write up to 5GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n",
    "# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "_cell_guid": "79c7e3d0-c299-4dcb-8224-4455121ee9b0",
    "_uuid": "d629ff2d2480ee46fbb7e2d37f6b5fab8052498a"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0.3\n",
      "1.18.1\n",
      "3.7.6 | packaged by conda-forge | (default, Mar 23 2020, 23:03:20) \n",
      "[GCC 7.3.0]\n",
      "0.23.1\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import sys\n",
    "import keras\n",
    "import sklearn\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense, Dropout, Activation, Embedding, Flatten\n",
    "from keras.layers import LSTM, SimpleRNN, GRU, Bidirectional, BatchNormalization,Convolution1D,MaxPooling1D, Reshape, GlobalAveragePooling1D\n",
    "from keras.utils import to_categorical\n",
    "import sklearn.preprocessing\n",
    "from sklearn import metrics\n",
    "from scipy.stats import zscore\n",
    "from tensorflow.keras.utils import get_file, plot_model\n",
    "from sklearn.model_selection import train_test_split\n",
    "from tensorflow.keras.callbacks import EarlyStopping\n",
    "import matplotlib.pyplot as plt\n",
    "print(pd.__version__)\n",
    "print(np.__version__)\n",
    "print(sys.version)\n",
    "print(sklearn.__version__)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>dur</th>\n",
       "      <th>proto</th>\n",
       "      <th>service</th>\n",
       "      <th>state</th>\n",
       "      <th>spkts</th>\n",
       "      <th>dpkts</th>\n",
       "      <th>sbytes</th>\n",
       "      <th>dbytes</th>\n",
       "      <th>rate</th>\n",
       "      <th>...</th>\n",
       "      <th>ct_dst_sport_ltm</th>\n",
       "      <th>ct_dst_src_ltm</th>\n",
       "      <th>is_ftp_login</th>\n",
       "      <th>ct_ftp_cmd</th>\n",
       "      <th>ct_flw_http_mthd</th>\n",
       "      <th>ct_src_ltm</th>\n",
       "      <th>ct_srv_dst</th>\n",
       "      <th>is_sm_ips_ports</th>\n",
       "      <th>attack_cat</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.121478</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>258</td>\n",
       "      <td>172</td>\n",
       "      <td>74.087490</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>0.649902</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>14</td>\n",
       "      <td>38</td>\n",
       "      <td>734</td>\n",
       "      <td>42014</td>\n",
       "      <td>78.473372</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1.623129</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>8</td>\n",
       "      <td>16</td>\n",
       "      <td>364</td>\n",
       "      <td>13186</td>\n",
       "      <td>14.170161</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1.681642</td>\n",
       "      <td>tcp</td>\n",
       "      <td>ftp</td>\n",
       "      <td>FIN</td>\n",
       "      <td>12</td>\n",
       "      <td>12</td>\n",
       "      <td>628</td>\n",
       "      <td>770</td>\n",
       "      <td>13.677108</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.449454</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>10</td>\n",
       "      <td>6</td>\n",
       "      <td>534</td>\n",
       "      <td>268</td>\n",
       "      <td>33.373826</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>40</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 45 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   id       dur proto service state  spkts  dpkts  sbytes  dbytes       rate  \\\n",
       "0   1  0.121478   tcp       -   FIN      6      4     258     172  74.087490   \n",
       "1   2  0.649902   tcp       -   FIN     14     38     734   42014  78.473372   \n",
       "2   3  1.623129   tcp       -   FIN      8     16     364   13186  14.170161   \n",
       "3   4  1.681642   tcp     ftp   FIN     12     12     628     770  13.677108   \n",
       "4   5  0.449454   tcp       -   FIN     10      6     534     268  33.373826   \n",
       "\n",
       "   ...  ct_dst_sport_ltm  ct_dst_src_ltm  is_ftp_login  ct_ftp_cmd  \\\n",
       "0  ...                 1               1             0           0   \n",
       "1  ...                 1               2             0           0   \n",
       "2  ...                 1               3             0           0   \n",
       "3  ...                 1               3             1           1   \n",
       "4  ...                 1              40             0           0   \n",
       "\n",
       "   ct_flw_http_mthd  ct_src_ltm  ct_srv_dst  is_sm_ips_ports  attack_cat  \\\n",
       "0                 0           1           1                0      Normal   \n",
       "1                 0           1           6                0      Normal   \n",
       "2                 0           2           6                0      Normal   \n",
       "3                 0           2           1                0      Normal   \n",
       "4                 0           2          39                0      Normal   \n",
       "\n",
       "   label  \n",
       "0      0  \n",
       "1      0  \n",
       "2      0  \n",
       "3      0  \n",
       "4      0  \n",
       "\n",
       "[5 rows x 45 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Loading training set into dataframe\n",
    "df = pd.read_csv('../input/unsw-nb15/UNSW_NB15_testing-set.csv')\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>dur</th>\n",
       "      <th>proto</th>\n",
       "      <th>service</th>\n",
       "      <th>state</th>\n",
       "      <th>spkts</th>\n",
       "      <th>dpkts</th>\n",
       "      <th>sbytes</th>\n",
       "      <th>dbytes</th>\n",
       "      <th>rate</th>\n",
       "      <th>...</th>\n",
       "      <th>ct_dst_sport_ltm</th>\n",
       "      <th>ct_dst_src_ltm</th>\n",
       "      <th>is_ftp_login</th>\n",
       "      <th>ct_ftp_cmd</th>\n",
       "      <th>ct_flw_http_mthd</th>\n",
       "      <th>ct_src_ltm</th>\n",
       "      <th>ct_srv_dst</th>\n",
       "      <th>is_sm_ips_ports</th>\n",
       "      <th>attack_cat</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.000011</td>\n",
       "      <td>udp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>496</td>\n",
       "      <td>0</td>\n",
       "      <td>90909.090200</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>0.000008</td>\n",
       "      <td>udp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1762</td>\n",
       "      <td>0</td>\n",
       "      <td>125000.000300</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>0.000005</td>\n",
       "      <td>udp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1068</td>\n",
       "      <td>0</td>\n",
       "      <td>200000.005100</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>0.000006</td>\n",
       "      <td>udp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>900</td>\n",
       "      <td>0</td>\n",
       "      <td>166666.660800</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.000010</td>\n",
       "      <td>udp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2126</td>\n",
       "      <td>0</td>\n",
       "      <td>100000.002500</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82327</th>\n",
       "      <td>82328</td>\n",
       "      <td>0.000005</td>\n",
       "      <td>udp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>104</td>\n",
       "      <td>0</td>\n",
       "      <td>200000.005100</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82328</th>\n",
       "      <td>82329</td>\n",
       "      <td>1.106101</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>20</td>\n",
       "      <td>8</td>\n",
       "      <td>18062</td>\n",
       "      <td>354</td>\n",
       "      <td>24.410067</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82329</th>\n",
       "      <td>82330</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>arp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>46</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82330</th>\n",
       "      <td>82331</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>arp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>46</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82331</th>\n",
       "      <td>82332</td>\n",
       "      <td>0.000009</td>\n",
       "      <td>udp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>104</td>\n",
       "      <td>0</td>\n",
       "      <td>111111.107200</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>82332 rows × 45 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          id       dur proto service state  spkts  dpkts  sbytes  dbytes  \\\n",
       "0          1  0.000011   udp       -   INT      2      0     496       0   \n",
       "1          2  0.000008   udp       -   INT      2      0    1762       0   \n",
       "2          3  0.000005   udp       -   INT      2      0    1068       0   \n",
       "3          4  0.000006   udp       -   INT      2      0     900       0   \n",
       "4          5  0.000010   udp       -   INT      2      0    2126       0   \n",
       "...      ...       ...   ...     ...   ...    ...    ...     ...     ...   \n",
       "82327  82328  0.000005   udp       -   INT      2      0     104       0   \n",
       "82328  82329  1.106101   tcp       -   FIN     20      8   18062     354   \n",
       "82329  82330  0.000000   arp       -   INT      1      0      46       0   \n",
       "82330  82331  0.000000   arp       -   INT      1      0      46       0   \n",
       "82331  82332  0.000009   udp       -   INT      2      0     104       0   \n",
       "\n",
       "                rate  ...  ct_dst_sport_ltm  ct_dst_src_ltm  is_ftp_login  \\\n",
       "0       90909.090200  ...                 1               2             0   \n",
       "1      125000.000300  ...                 1               2             0   \n",
       "2      200000.005100  ...                 1               3             0   \n",
       "3      166666.660800  ...                 1               3             0   \n",
       "4      100000.002500  ...                 1               3             0   \n",
       "...              ...  ...               ...             ...           ...   \n",
       "82327  200000.005100  ...                 1               2             0   \n",
       "82328      24.410067  ...                 1               1             0   \n",
       "82329       0.000000  ...                 1               1             0   \n",
       "82330       0.000000  ...                 1               1             0   \n",
       "82331  111111.107200  ...                 1               1             0   \n",
       "\n",
       "       ct_ftp_cmd  ct_flw_http_mthd  ct_src_ltm  ct_srv_dst  is_sm_ips_ports  \\\n",
       "0               0                 0           1           2                0   \n",
       "1               0                 0           1           2                0   \n",
       "2               0                 0           1           3                0   \n",
       "3               0                 0           2           3                0   \n",
       "4               0                 0           2           3                0   \n",
       "...           ...               ...         ...         ...              ...   \n",
       "82327           0                 0           2           1                0   \n",
       "82328           0                 0           3           2                0   \n",
       "82329           0                 0           1           1                1   \n",
       "82330           0                 0           1           1                1   \n",
       "82331           0                 0           1           1                0   \n",
       "\n",
       "       attack_cat  label  \n",
       "0          Normal      0  \n",
       "1          Normal      0  \n",
       "2          Normal      0  \n",
       "3          Normal      0  \n",
       "4          Normal      0  \n",
       "...           ...    ...  \n",
       "82327      Normal      0  \n",
       "82328      Normal      0  \n",
       "82329      Normal      0  \n",
       "82330      Normal      0  \n",
       "82331      Normal      0  \n",
       "\n",
       "[82332 rows x 45 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Loading testing set into dataframe\n",
    "qp = pd.read_csv('../input/unsw-nb15/UNSW_NB15_training-set.csv')\n",
    "qp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(175341, 44)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Dropping the last columns of training set\n",
    "df = df.drop('id', 1) # we don't need it in this project\n",
    "df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>dur</th>\n",
       "      <th>proto</th>\n",
       "      <th>service</th>\n",
       "      <th>state</th>\n",
       "      <th>spkts</th>\n",
       "      <th>dpkts</th>\n",
       "      <th>sbytes</th>\n",
       "      <th>dbytes</th>\n",
       "      <th>rate</th>\n",
       "      <th>sttl</th>\n",
       "      <th>...</th>\n",
       "      <th>ct_src_dport_ltm</th>\n",
       "      <th>ct_dst_sport_ltm</th>\n",
       "      <th>ct_dst_src_ltm</th>\n",
       "      <th>is_ftp_login</th>\n",
       "      <th>ct_ftp_cmd</th>\n",
       "      <th>ct_flw_http_mthd</th>\n",
       "      <th>ct_src_ltm</th>\n",
       "      <th>ct_srv_dst</th>\n",
       "      <th>is_sm_ips_ports</th>\n",
       "      <th>attack_cat</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.121478</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>258</td>\n",
       "      <td>172</td>\n",
       "      <td>74.087490</td>\n",
       "      <td>252</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.649902</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>14</td>\n",
       "      <td>38</td>\n",
       "      <td>734</td>\n",
       "      <td>42014</td>\n",
       "      <td>78.473372</td>\n",
       "      <td>62</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.623129</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>8</td>\n",
       "      <td>16</td>\n",
       "      <td>364</td>\n",
       "      <td>13186</td>\n",
       "      <td>14.170161</td>\n",
       "      <td>62</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.681642</td>\n",
       "      <td>tcp</td>\n",
       "      <td>ftp</td>\n",
       "      <td>FIN</td>\n",
       "      <td>12</td>\n",
       "      <td>12</td>\n",
       "      <td>628</td>\n",
       "      <td>770</td>\n",
       "      <td>13.677108</td>\n",
       "      <td>62</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.449454</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>10</td>\n",
       "      <td>6</td>\n",
       "      <td>534</td>\n",
       "      <td>268</td>\n",
       "      <td>33.373826</td>\n",
       "      <td>254</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>40</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 43 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        dur proto service state  spkts  dpkts  sbytes  dbytes       rate  \\\n",
       "0  0.121478   tcp       -   FIN      6      4     258     172  74.087490   \n",
       "1  0.649902   tcp       -   FIN     14     38     734   42014  78.473372   \n",
       "2  1.623129   tcp       -   FIN      8     16     364   13186  14.170161   \n",
       "3  1.681642   tcp     ftp   FIN     12     12     628     770  13.677108   \n",
       "4  0.449454   tcp       -   FIN     10      6     534     268  33.373826   \n",
       "\n",
       "   sttl  ...  ct_src_dport_ltm  ct_dst_sport_ltm  ct_dst_src_ltm  \\\n",
       "0   252  ...                 1                 1               1   \n",
       "1    62  ...                 1                 1               2   \n",
       "2    62  ...                 1                 1               3   \n",
       "3    62  ...                 1                 1               3   \n",
       "4   254  ...                 2                 1              40   \n",
       "\n",
       "   is_ftp_login  ct_ftp_cmd  ct_flw_http_mthd  ct_src_ltm  ct_srv_dst  \\\n",
       "0             0           0                 0           1           1   \n",
       "1             0           0                 0           1           6   \n",
       "2             0           0                 0           2           6   \n",
       "3             1           1                 0           2           1   \n",
       "4             0           0                 0           2          39   \n",
       "\n",
       "   is_sm_ips_ports  attack_cat  \n",
       "0                0      Normal  \n",
       "1                0      Normal  \n",
       "2                0      Normal  \n",
       "3                0      Normal  \n",
       "4                0      Normal  \n",
       "\n",
       "[5 rows x 43 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = df.drop('label', 1) # we don't need it in this project\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(82332, 43)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Dropping the last columns of testing set\n",
    "qp = qp.drop('id', 1)\n",
    "qp = qp.drop('label', 1)\n",
    "qp.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().values.any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "qp.isnull().values.any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['proto', 'state', 'service']"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#defining col list\n",
    "cols = ['proto','state','service']\n",
    "cols"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "#One-hot encoding\n",
    "def one_hot(df, cols):\n",
    "    \"\"\"\n",
    "    @param df pandas DataFrame\n",
    "    @param cols a list of columns to encode\n",
    "    @return a DataFrame with one-hot encoding\n",
    "    \"\"\"\n",
    "    for each in cols:\n",
    "        dummies = pd.get_dummies(df[each], prefix=each, drop_first=False)\n",
    "        df = pd.concat([df, dummies], axis=1)\n",
    "        df = df.drop(each, 1)\n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>dur</th>\n",
       "      <th>proto</th>\n",
       "      <th>service</th>\n",
       "      <th>state</th>\n",
       "      <th>spkts</th>\n",
       "      <th>dpkts</th>\n",
       "      <th>sbytes</th>\n",
       "      <th>dbytes</th>\n",
       "      <th>rate</th>\n",
       "      <th>sttl</th>\n",
       "      <th>...</th>\n",
       "      <th>ct_src_dport_ltm</th>\n",
       "      <th>ct_dst_sport_ltm</th>\n",
       "      <th>ct_dst_src_ltm</th>\n",
       "      <th>is_ftp_login</th>\n",
       "      <th>ct_ftp_cmd</th>\n",
       "      <th>ct_flw_http_mthd</th>\n",
       "      <th>ct_src_ltm</th>\n",
       "      <th>ct_srv_dst</th>\n",
       "      <th>is_sm_ips_ports</th>\n",
       "      <th>attack_cat</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.121478</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>258</td>\n",
       "      <td>172</td>\n",
       "      <td>74.087490</td>\n",
       "      <td>252</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.649902</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>14</td>\n",
       "      <td>38</td>\n",
       "      <td>734</td>\n",
       "      <td>42014</td>\n",
       "      <td>78.473372</td>\n",
       "      <td>62</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.623129</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>8</td>\n",
       "      <td>16</td>\n",
       "      <td>364</td>\n",
       "      <td>13186</td>\n",
       "      <td>14.170161</td>\n",
       "      <td>62</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.681642</td>\n",
       "      <td>tcp</td>\n",
       "      <td>ftp</td>\n",
       "      <td>FIN</td>\n",
       "      <td>12</td>\n",
       "      <td>12</td>\n",
       "      <td>628</td>\n",
       "      <td>770</td>\n",
       "      <td>13.677108</td>\n",
       "      <td>62</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.449454</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>10</td>\n",
       "      <td>6</td>\n",
       "      <td>534</td>\n",
       "      <td>268</td>\n",
       "      <td>33.373826</td>\n",
       "      <td>254</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>40</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82327</th>\n",
       "      <td>0.000005</td>\n",
       "      <td>udp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>104</td>\n",
       "      <td>0</td>\n",
       "      <td>200000.005100</td>\n",
       "      <td>254</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82328</th>\n",
       "      <td>1.106101</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>20</td>\n",
       "      <td>8</td>\n",
       "      <td>18062</td>\n",
       "      <td>354</td>\n",
       "      <td>24.410067</td>\n",
       "      <td>254</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82329</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>arp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>46</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82330</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>arp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>46</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82331</th>\n",
       "      <td>0.000009</td>\n",
       "      <td>udp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>104</td>\n",
       "      <td>0</td>\n",
       "      <td>111111.107200</td>\n",
       "      <td>254</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>257673 rows × 43 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            dur proto service state  spkts  dpkts  sbytes  dbytes  \\\n",
       "0      0.121478   tcp       -   FIN      6      4     258     172   \n",
       "1      0.649902   tcp       -   FIN     14     38     734   42014   \n",
       "2      1.623129   tcp       -   FIN      8     16     364   13186   \n",
       "3      1.681642   tcp     ftp   FIN     12     12     628     770   \n",
       "4      0.449454   tcp       -   FIN     10      6     534     268   \n",
       "...         ...   ...     ...   ...    ...    ...     ...     ...   \n",
       "82327  0.000005   udp       -   INT      2      0     104       0   \n",
       "82328  1.106101   tcp       -   FIN     20      8   18062     354   \n",
       "82329  0.000000   arp       -   INT      1      0      46       0   \n",
       "82330  0.000000   arp       -   INT      1      0      46       0   \n",
       "82331  0.000009   udp       -   INT      2      0     104       0   \n",
       "\n",
       "                rate  sttl  ...  ct_src_dport_ltm  ct_dst_sport_ltm  \\\n",
       "0          74.087490   252  ...                 1                 1   \n",
       "1          78.473372    62  ...                 1                 1   \n",
       "2          14.170161    62  ...                 1                 1   \n",
       "3          13.677108    62  ...                 1                 1   \n",
       "4          33.373826   254  ...                 2                 1   \n",
       "...              ...   ...  ...               ...               ...   \n",
       "82327  200000.005100   254  ...                 1                 1   \n",
       "82328      24.410067   254  ...                 1                 1   \n",
       "82329       0.000000     0  ...                 1                 1   \n",
       "82330       0.000000     0  ...                 1                 1   \n",
       "82331  111111.107200   254  ...                 1                 1   \n",
       "\n",
       "       ct_dst_src_ltm  is_ftp_login  ct_ftp_cmd  ct_flw_http_mthd  ct_src_ltm  \\\n",
       "0                   1             0           0                 0           1   \n",
       "1                   2             0           0                 0           1   \n",
       "2                   3             0           0                 0           2   \n",
       "3                   3             1           1                 0           2   \n",
       "4                  40             0           0                 0           2   \n",
       "...               ...           ...         ...               ...         ...   \n",
       "82327               2             0           0                 0           2   \n",
       "82328               1             0           0                 0           3   \n",
       "82329               1             0           0                 0           1   \n",
       "82330               1             0           0                 0           1   \n",
       "82331               1             0           0                 0           1   \n",
       "\n",
       "       ct_srv_dst  is_sm_ips_ports  attack_cat  \n",
       "0               1                0      Normal  \n",
       "1               6                0      Normal  \n",
       "2               6                0      Normal  \n",
       "3               1                0      Normal  \n",
       "4              39                0      Normal  \n",
       "...           ...              ...         ...  \n",
       "82327           1                0      Normal  \n",
       "82328           2                0      Normal  \n",
       "82329           1                1      Normal  \n",
       "82330           1                1      Normal  \n",
       "82331           1                0      Normal  \n",
       "\n",
       "[257673 rows x 43 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Merging train and test data\n",
    "combined_data = pd.concat([df,qp])\n",
    "combined_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>dur</th>\n",
       "      <th>proto</th>\n",
       "      <th>service</th>\n",
       "      <th>state</th>\n",
       "      <th>spkts</th>\n",
       "      <th>dpkts</th>\n",
       "      <th>sbytes</th>\n",
       "      <th>dbytes</th>\n",
       "      <th>rate</th>\n",
       "      <th>sttl</th>\n",
       "      <th>...</th>\n",
       "      <th>ct_src_dport_ltm</th>\n",
       "      <th>ct_dst_sport_ltm</th>\n",
       "      <th>ct_dst_src_ltm</th>\n",
       "      <th>is_ftp_login</th>\n",
       "      <th>ct_ftp_cmd</th>\n",
       "      <th>ct_flw_http_mthd</th>\n",
       "      <th>ct_src_ltm</th>\n",
       "      <th>ct_srv_dst</th>\n",
       "      <th>is_sm_ips_ports</th>\n",
       "      <th>attack_cat</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.121478</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>258</td>\n",
       "      <td>172</td>\n",
       "      <td>74.087490</td>\n",
       "      <td>252</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.649902</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>14</td>\n",
       "      <td>38</td>\n",
       "      <td>734</td>\n",
       "      <td>42014</td>\n",
       "      <td>78.473372</td>\n",
       "      <td>62</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.623129</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>8</td>\n",
       "      <td>16</td>\n",
       "      <td>364</td>\n",
       "      <td>13186</td>\n",
       "      <td>14.170161</td>\n",
       "      <td>62</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.681642</td>\n",
       "      <td>tcp</td>\n",
       "      <td>ftp</td>\n",
       "      <td>FIN</td>\n",
       "      <td>12</td>\n",
       "      <td>12</td>\n",
       "      <td>628</td>\n",
       "      <td>770</td>\n",
       "      <td>13.677108</td>\n",
       "      <td>62</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.449454</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>10</td>\n",
       "      <td>6</td>\n",
       "      <td>534</td>\n",
       "      <td>268</td>\n",
       "      <td>33.373826</td>\n",
       "      <td>254</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>40</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>39</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82327</th>\n",
       "      <td>0.000005</td>\n",
       "      <td>udp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>104</td>\n",
       "      <td>0</td>\n",
       "      <td>200000.005100</td>\n",
       "      <td>254</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82328</th>\n",
       "      <td>1.106101</td>\n",
       "      <td>tcp</td>\n",
       "      <td>-</td>\n",
       "      <td>FIN</td>\n",
       "      <td>20</td>\n",
       "      <td>8</td>\n",
       "      <td>18062</td>\n",
       "      <td>354</td>\n",
       "      <td>24.410067</td>\n",
       "      <td>254</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82329</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>arp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>46</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82330</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>arp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>46</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82331</th>\n",
       "      <td>0.000009</td>\n",
       "      <td>udp</td>\n",
       "      <td>-</td>\n",
       "      <td>INT</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>104</td>\n",
       "      <td>0</td>\n",
       "      <td>111111.107200</td>\n",
       "      <td>254</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>257673 rows × 43 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            dur proto service state  spkts  dpkts  sbytes  dbytes  \\\n",
       "0      0.121478   tcp       -   FIN      6      4     258     172   \n",
       "1      0.649902   tcp       -   FIN     14     38     734   42014   \n",
       "2      1.623129   tcp       -   FIN      8     16     364   13186   \n",
       "3      1.681642   tcp     ftp   FIN     12     12     628     770   \n",
       "4      0.449454   tcp       -   FIN     10      6     534     268   \n",
       "...         ...   ...     ...   ...    ...    ...     ...     ...   \n",
       "82327  0.000005   udp       -   INT      2      0     104       0   \n",
       "82328  1.106101   tcp       -   FIN     20      8   18062     354   \n",
       "82329  0.000000   arp       -   INT      1      0      46       0   \n",
       "82330  0.000000   arp       -   INT      1      0      46       0   \n",
       "82331  0.000009   udp       -   INT      2      0     104       0   \n",
       "\n",
       "                rate  sttl  ...  ct_src_dport_ltm  ct_dst_sport_ltm  \\\n",
       "0          74.087490   252  ...                 1                 1   \n",
       "1          78.473372    62  ...                 1                 1   \n",
       "2          14.170161    62  ...                 1                 1   \n",
       "3          13.677108    62  ...                 1                 1   \n",
       "4          33.373826   254  ...                 2                 1   \n",
       "...              ...   ...  ...               ...               ...   \n",
       "82327  200000.005100   254  ...                 1                 1   \n",
       "82328      24.410067   254  ...                 1                 1   \n",
       "82329       0.000000     0  ...                 1                 1   \n",
       "82330       0.000000     0  ...                 1                 1   \n",
       "82331  111111.107200   254  ...                 1                 1   \n",
       "\n",
       "       ct_dst_src_ltm  is_ftp_login  ct_ftp_cmd  ct_flw_http_mthd  ct_src_ltm  \\\n",
       "0                   1             0           0                 0           1   \n",
       "1                   2             0           0                 0           1   \n",
       "2                   3             0           0                 0           2   \n",
       "3                   3             1           1                 0           2   \n",
       "4                  40             0           0                 0           2   \n",
       "...               ...           ...         ...               ...         ...   \n",
       "82327               2             0           0                 0           2   \n",
       "82328               1             0           0                 0           3   \n",
       "82329               1             0           0                 0           1   \n",
       "82330               1             0           0                 0           1   \n",
       "82331               1             0           0                 0           1   \n",
       "\n",
       "       ct_srv_dst  is_sm_ips_ports  attack_cat  \n",
       "0               1                0      Normal  \n",
       "1               6                0      Normal  \n",
       "2               6                0      Normal  \n",
       "3               1                0      Normal  \n",
       "4              39                0      Normal  \n",
       "...           ...              ...         ...  \n",
       "82327           1                0      Normal  \n",
       "82328           2                0      Normal  \n",
       "82329           1                1      Normal  \n",
       "82330           1                1      Normal  \n",
       "82331           1                0      Normal  \n",
       "\n",
       "[257673 rows x 43 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "combined_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "tmp = combined_data.pop('attack_cat')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Applying one hot encoding to combined data\n",
    "combined_data = one_hot(combined_data,cols)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>dur</th>\n",
       "      <th>spkts</th>\n",
       "      <th>dpkts</th>\n",
       "      <th>sbytes</th>\n",
       "      <th>dbytes</th>\n",
       "      <th>rate</th>\n",
       "      <th>sttl</th>\n",
       "      <th>dttl</th>\n",
       "      <th>sload</th>\n",
       "      <th>dload</th>\n",
       "      <th>...</th>\n",
       "      <th>service_ftp</th>\n",
       "      <th>service_ftp-data</th>\n",
       "      <th>service_http</th>\n",
       "      <th>service_irc</th>\n",
       "      <th>service_pop3</th>\n",
       "      <th>service_radius</th>\n",
       "      <th>service_smtp</th>\n",
       "      <th>service_snmp</th>\n",
       "      <th>service_ssh</th>\n",
       "      <th>service_ssl</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.121478</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>258</td>\n",
       "      <td>172</td>\n",
       "      <td>74.087490</td>\n",
       "      <td>252</td>\n",
       "      <td>254</td>\n",
       "      <td>1.415894e+04</td>\n",
       "      <td>8495.365234</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.649902</td>\n",
       "      <td>14</td>\n",
       "      <td>38</td>\n",
       "      <td>734</td>\n",
       "      <td>42014</td>\n",
       "      <td>78.473372</td>\n",
       "      <td>62</td>\n",
       "      <td>252</td>\n",
       "      <td>8.395112e+03</td>\n",
       "      <td>503571.312500</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.623129</td>\n",
       "      <td>8</td>\n",
       "      <td>16</td>\n",
       "      <td>364</td>\n",
       "      <td>13186</td>\n",
       "      <td>14.170161</td>\n",
       "      <td>62</td>\n",
       "      <td>252</td>\n",
       "      <td>1.572272e+03</td>\n",
       "      <td>60929.230470</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.681642</td>\n",
       "      <td>12</td>\n",
       "      <td>12</td>\n",
       "      <td>628</td>\n",
       "      <td>770</td>\n",
       "      <td>13.677108</td>\n",
       "      <td>62</td>\n",
       "      <td>252</td>\n",
       "      <td>2.740179e+03</td>\n",
       "      <td>3358.622070</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.449454</td>\n",
       "      <td>10</td>\n",
       "      <td>6</td>\n",
       "      <td>534</td>\n",
       "      <td>268</td>\n",
       "      <td>33.373826</td>\n",
       "      <td>254</td>\n",
       "      <td>252</td>\n",
       "      <td>8.561499e+03</td>\n",
       "      <td>3987.059814</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82327</th>\n",
       "      <td>0.000005</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>104</td>\n",
       "      <td>0</td>\n",
       "      <td>200000.005100</td>\n",
       "      <td>254</td>\n",
       "      <td>0</td>\n",
       "      <td>8.320000e+07</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82328</th>\n",
       "      <td>1.106101</td>\n",
       "      <td>20</td>\n",
       "      <td>8</td>\n",
       "      <td>18062</td>\n",
       "      <td>354</td>\n",
       "      <td>24.410067</td>\n",
       "      <td>254</td>\n",
       "      <td>252</td>\n",
       "      <td>1.241044e+05</td>\n",
       "      <td>2242.109863</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82329</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>46</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82330</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>46</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82331</th>\n",
       "      <td>0.000009</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>104</td>\n",
       "      <td>0</td>\n",
       "      <td>111111.107200</td>\n",
       "      <td>254</td>\n",
       "      <td>0</td>\n",
       "      <td>4.622222e+07</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>257673 rows × 196 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            dur  spkts  dpkts  sbytes  dbytes           rate  sttl  dttl  \\\n",
       "0      0.121478      6      4     258     172      74.087490   252   254   \n",
       "1      0.649902     14     38     734   42014      78.473372    62   252   \n",
       "2      1.623129      8     16     364   13186      14.170161    62   252   \n",
       "3      1.681642     12     12     628     770      13.677108    62   252   \n",
       "4      0.449454     10      6     534     268      33.373826   254   252   \n",
       "...         ...    ...    ...     ...     ...            ...   ...   ...   \n",
       "82327  0.000005      2      0     104       0  200000.005100   254     0   \n",
       "82328  1.106101     20      8   18062     354      24.410067   254   252   \n",
       "82329  0.000000      1      0      46       0       0.000000     0     0   \n",
       "82330  0.000000      1      0      46       0       0.000000     0     0   \n",
       "82331  0.000009      2      0     104       0  111111.107200   254     0   \n",
       "\n",
       "              sload          dload  ...  service_ftp  service_ftp-data  \\\n",
       "0      1.415894e+04    8495.365234  ...            0                 0   \n",
       "1      8.395112e+03  503571.312500  ...            0                 0   \n",
       "2      1.572272e+03   60929.230470  ...            0                 0   \n",
       "3      2.740179e+03    3358.622070  ...            1                 0   \n",
       "4      8.561499e+03    3987.059814  ...            0                 0   \n",
       "...             ...            ...  ...          ...               ...   \n",
       "82327  8.320000e+07       0.000000  ...            0                 0   \n",
       "82328  1.241044e+05    2242.109863  ...            0                 0   \n",
       "82329  0.000000e+00       0.000000  ...            0                 0   \n",
       "82330  0.000000e+00       0.000000  ...            0                 0   \n",
       "82331  4.622222e+07       0.000000  ...            0                 0   \n",
       "\n",
       "       service_http  service_irc  service_pop3  service_radius  service_smtp  \\\n",
       "0                 0            0             0               0             0   \n",
       "1                 0            0             0               0             0   \n",
       "2                 0            0             0               0             0   \n",
       "3                 0            0             0               0             0   \n",
       "4                 0            0             0               0             0   \n",
       "...             ...          ...           ...             ...           ...   \n",
       "82327             0            0             0               0             0   \n",
       "82328             0            0             0               0             0   \n",
       "82329             0            0             0               0             0   \n",
       "82330             0            0             0               0             0   \n",
       "82331             0            0             0               0             0   \n",
       "\n",
       "       service_snmp  service_ssh  service_ssl  \n",
       "0                 0            0            0  \n",
       "1                 0            0            0  \n",
       "2                 0            0            0  \n",
       "3                 0            0            0  \n",
       "4                 0            0            0  \n",
       "...             ...          ...          ...  \n",
       "82327             0            0            0  \n",
       "82328             0            0            0  \n",
       "82329             0            0            0  \n",
       "82330             0            0            0  \n",
       "82331             0            0            0  \n",
       "\n",
       "[257673 rows x 196 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "combined_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Function to min-max normalize\n",
    "def normalize(df, cols):\n",
    "    \"\"\"\n",
    "    @param df pandas DataFrame\n",
    "    @param cols a list of columns to encode\n",
    "    @return a DataFrame with normalized specified features\n",
    "    \"\"\"\n",
    "    result = df.copy() # do not touch the original df\n",
    "    for feature_name in cols:\n",
    "        max_value = df[feature_name].max()\n",
    "        min_value = df[feature_name].min()\n",
    "        if max_value > min_value:\n",
    "            result[feature_name] = (df[feature_name] - min_value) / (max_value - min_value)\n",
    "    return result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>dur</th>\n",
       "      <th>spkts</th>\n",
       "      <th>dpkts</th>\n",
       "      <th>sbytes</th>\n",
       "      <th>dbytes</th>\n",
       "      <th>rate</th>\n",
       "      <th>sttl</th>\n",
       "      <th>dttl</th>\n",
       "      <th>sload</th>\n",
       "      <th>dload</th>\n",
       "      <th>...</th>\n",
       "      <th>service_ftp</th>\n",
       "      <th>service_ftp-data</th>\n",
       "      <th>service_http</th>\n",
       "      <th>service_irc</th>\n",
       "      <th>service_pop3</th>\n",
       "      <th>service_radius</th>\n",
       "      <th>service_smtp</th>\n",
       "      <th>service_snmp</th>\n",
       "      <th>service_ssh</th>\n",
       "      <th>service_ssl</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.024634e-03</td>\n",
       "      <td>0.000470</td>\n",
       "      <td>0.000363</td>\n",
       "      <td>0.000016</td>\n",
       "      <td>0.000012</td>\n",
       "      <td>0.000074</td>\n",
       "      <td>0.988235</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.364553e-06</td>\n",
       "      <td>0.000379</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.083170e-02</td>\n",
       "      <td>0.001221</td>\n",
       "      <td>0.003449</td>\n",
       "      <td>0.000049</td>\n",
       "      <td>0.002866</td>\n",
       "      <td>0.000078</td>\n",
       "      <td>0.243137</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>1.401989e-06</td>\n",
       "      <td>0.022458</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.705215e-02</td>\n",
       "      <td>0.000658</td>\n",
       "      <td>0.001452</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.000900</td>\n",
       "      <td>0.000014</td>\n",
       "      <td>0.243137</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>2.625704e-07</td>\n",
       "      <td>0.002717</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.802737e-02</td>\n",
       "      <td>0.001033</td>\n",
       "      <td>0.001089</td>\n",
       "      <td>0.000042</td>\n",
       "      <td>0.000053</td>\n",
       "      <td>0.000014</td>\n",
       "      <td>0.243137</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>4.576117e-07</td>\n",
       "      <td>0.000150</td>\n",
       "      <td>...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>7.490901e-03</td>\n",
       "      <td>0.000845</td>\n",
       "      <td>0.000545</td>\n",
       "      <td>0.000036</td>\n",
       "      <td>0.000018</td>\n",
       "      <td>0.000033</td>\n",
       "      <td>0.996078</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>1.429776e-06</td>\n",
       "      <td>0.000178</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82327</th>\n",
       "      <td>8.333335e-08</td>\n",
       "      <td>0.000094</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000006</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.996078</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.389445e-02</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82328</th>\n",
       "      <td>1.843502e-02</td>\n",
       "      <td>0.001785</td>\n",
       "      <td>0.000726</td>\n",
       "      <td>0.001257</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.996078</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>2.072552e-05</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82329</th>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82330</th>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82331</th>\n",
       "      <td>1.500000e-07</td>\n",
       "      <td>0.000094</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000006</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.111111</td>\n",
       "      <td>0.996078</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.719141e-03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>257673 rows × 196 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                dur     spkts     dpkts    sbytes    dbytes      rate  \\\n",
       "0      2.024634e-03  0.000470  0.000363  0.000016  0.000012  0.000074   \n",
       "1      1.083170e-02  0.001221  0.003449  0.000049  0.002866  0.000078   \n",
       "2      2.705215e-02  0.000658  0.001452  0.000024  0.000900  0.000014   \n",
       "3      2.802737e-02  0.001033  0.001089  0.000042  0.000053  0.000014   \n",
       "4      7.490901e-03  0.000845  0.000545  0.000036  0.000018  0.000033   \n",
       "...             ...       ...       ...       ...       ...       ...   \n",
       "82327  8.333335e-08  0.000094  0.000000  0.000006  0.000000  0.200000   \n",
       "82328  1.843502e-02  0.001785  0.000726  0.001257  0.000024  0.000024   \n",
       "82329  0.000000e+00  0.000000  0.000000  0.000002  0.000000  0.000000   \n",
       "82330  0.000000e+00  0.000000  0.000000  0.000002  0.000000  0.000000   \n",
       "82331  1.500000e-07  0.000094  0.000000  0.000006  0.000000  0.111111   \n",
       "\n",
       "           sttl      dttl         sload     dload  ...  service_ftp  \\\n",
       "0      0.988235  1.000000  2.364553e-06  0.000379  ...          0.0   \n",
       "1      0.243137  0.992126  1.401989e-06  0.022458  ...          0.0   \n",
       "2      0.243137  0.992126  2.625704e-07  0.002717  ...          0.0   \n",
       "3      0.243137  0.992126  4.576117e-07  0.000150  ...          1.0   \n",
       "4      0.996078  0.992126  1.429776e-06  0.000178  ...          0.0   \n",
       "...         ...       ...           ...       ...  ...          ...   \n",
       "82327  0.996078  0.000000  1.389445e-02  0.000000  ...          0.0   \n",
       "82328  0.996078  0.992126  2.072552e-05  0.000100  ...          0.0   \n",
       "82329  0.000000  0.000000  0.000000e+00  0.000000  ...          0.0   \n",
       "82330  0.000000  0.000000  0.000000e+00  0.000000  ...          0.0   \n",
       "82331  0.996078  0.000000  7.719141e-03  0.000000  ...          0.0   \n",
       "\n",
       "       service_ftp-data  service_http  service_irc  service_pop3  \\\n",
       "0                   0.0           0.0          0.0           0.0   \n",
       "1                   0.0           0.0          0.0           0.0   \n",
       "2                   0.0           0.0          0.0           0.0   \n",
       "3                   0.0           0.0          0.0           0.0   \n",
       "4                   0.0           0.0          0.0           0.0   \n",
       "...                 ...           ...          ...           ...   \n",
       "82327               0.0           0.0          0.0           0.0   \n",
       "82328               0.0           0.0          0.0           0.0   \n",
       "82329               0.0           0.0          0.0           0.0   \n",
       "82330               0.0           0.0          0.0           0.0   \n",
       "82331               0.0           0.0          0.0           0.0   \n",
       "\n",
       "       service_radius  service_smtp  service_snmp  service_ssh  service_ssl  \n",
       "0                 0.0           0.0           0.0          0.0          0.0  \n",
       "1                 0.0           0.0           0.0          0.0          0.0  \n",
       "2                 0.0           0.0           0.0          0.0          0.0  \n",
       "3                 0.0           0.0           0.0          0.0          0.0  \n",
       "4                 0.0           0.0           0.0          0.0          0.0  \n",
       "...               ...           ...           ...          ...          ...  \n",
       "82327             0.0           0.0           0.0          0.0          0.0  \n",
       "82328             0.0           0.0           0.0          0.0          0.0  \n",
       "82329             0.0           0.0           0.0          0.0          0.0  \n",
       "82330             0.0           0.0           0.0          0.0          0.0  \n",
       "82331             0.0           0.0           0.0          0.0          0.0  \n",
       "\n",
       "[257673 rows x 196 columns]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Normalizing training set\n",
    "new_train_df = normalize(combined_data,combined_data.columns)\n",
    "new_train_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0        Normal\n",
       "1        Normal\n",
       "2        Normal\n",
       "3        Normal\n",
       "4        Normal\n",
       "          ...  \n",
       "82327    Normal\n",
       "82328    Normal\n",
       "82329    Normal\n",
       "82330    Normal\n",
       "82331    Normal\n",
       "Name: attack_cat, Length: 257673, dtype: object"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tmp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>dur</th>\n",
       "      <th>spkts</th>\n",
       "      <th>dpkts</th>\n",
       "      <th>sbytes</th>\n",
       "      <th>dbytes</th>\n",
       "      <th>rate</th>\n",
       "      <th>sttl</th>\n",
       "      <th>dttl</th>\n",
       "      <th>sload</th>\n",
       "      <th>dload</th>\n",
       "      <th>...</th>\n",
       "      <th>service_ftp-data</th>\n",
       "      <th>service_http</th>\n",
       "      <th>service_irc</th>\n",
       "      <th>service_pop3</th>\n",
       "      <th>service_radius</th>\n",
       "      <th>service_smtp</th>\n",
       "      <th>service_snmp</th>\n",
       "      <th>service_ssh</th>\n",
       "      <th>service_ssl</th>\n",
       "      <th>Class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.024634e-03</td>\n",
       "      <td>0.000470</td>\n",
       "      <td>0.000363</td>\n",
       "      <td>0.000016</td>\n",
       "      <td>0.000012</td>\n",
       "      <td>0.000074</td>\n",
       "      <td>0.988235</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.364553e-06</td>\n",
       "      <td>0.000379</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.083170e-02</td>\n",
       "      <td>0.001221</td>\n",
       "      <td>0.003449</td>\n",
       "      <td>0.000049</td>\n",
       "      <td>0.002866</td>\n",
       "      <td>0.000078</td>\n",
       "      <td>0.243137</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>1.401989e-06</td>\n",
       "      <td>0.022458</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.705215e-02</td>\n",
       "      <td>0.000658</td>\n",
       "      <td>0.001452</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.000900</td>\n",
       "      <td>0.000014</td>\n",
       "      <td>0.243137</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>2.625704e-07</td>\n",
       "      <td>0.002717</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.802737e-02</td>\n",
       "      <td>0.001033</td>\n",
       "      <td>0.001089</td>\n",
       "      <td>0.000042</td>\n",
       "      <td>0.000053</td>\n",
       "      <td>0.000014</td>\n",
       "      <td>0.243137</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>4.576117e-07</td>\n",
       "      <td>0.000150</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>7.490901e-03</td>\n",
       "      <td>0.000845</td>\n",
       "      <td>0.000545</td>\n",
       "      <td>0.000036</td>\n",
       "      <td>0.000018</td>\n",
       "      <td>0.000033</td>\n",
       "      <td>0.996078</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>1.429776e-06</td>\n",
       "      <td>0.000178</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82327</th>\n",
       "      <td>8.333335e-08</td>\n",
       "      <td>0.000094</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000006</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.996078</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.389445e-02</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82328</th>\n",
       "      <td>1.843502e-02</td>\n",
       "      <td>0.001785</td>\n",
       "      <td>0.000726</td>\n",
       "      <td>0.001257</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.996078</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>2.072552e-05</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82329</th>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82330</th>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82331</th>\n",
       "      <td>1.500000e-07</td>\n",
       "      <td>0.000094</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000006</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.111111</td>\n",
       "      <td>0.996078</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.719141e-03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>257673 rows × 197 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                dur     spkts     dpkts    sbytes    dbytes      rate  \\\n",
       "0      2.024634e-03  0.000470  0.000363  0.000016  0.000012  0.000074   \n",
       "1      1.083170e-02  0.001221  0.003449  0.000049  0.002866  0.000078   \n",
       "2      2.705215e-02  0.000658  0.001452  0.000024  0.000900  0.000014   \n",
       "3      2.802737e-02  0.001033  0.001089  0.000042  0.000053  0.000014   \n",
       "4      7.490901e-03  0.000845  0.000545  0.000036  0.000018  0.000033   \n",
       "...             ...       ...       ...       ...       ...       ...   \n",
       "82327  8.333335e-08  0.000094  0.000000  0.000006  0.000000  0.200000   \n",
       "82328  1.843502e-02  0.001785  0.000726  0.001257  0.000024  0.000024   \n",
       "82329  0.000000e+00  0.000000  0.000000  0.000002  0.000000  0.000000   \n",
       "82330  0.000000e+00  0.000000  0.000000  0.000002  0.000000  0.000000   \n",
       "82331  1.500000e-07  0.000094  0.000000  0.000006  0.000000  0.111111   \n",
       "\n",
       "           sttl      dttl         sload     dload  ...  service_ftp-data  \\\n",
       "0      0.988235  1.000000  2.364553e-06  0.000379  ...               0.0   \n",
       "1      0.243137  0.992126  1.401989e-06  0.022458  ...               0.0   \n",
       "2      0.243137  0.992126  2.625704e-07  0.002717  ...               0.0   \n",
       "3      0.243137  0.992126  4.576117e-07  0.000150  ...               0.0   \n",
       "4      0.996078  0.992126  1.429776e-06  0.000178  ...               0.0   \n",
       "...         ...       ...           ...       ...  ...               ...   \n",
       "82327  0.996078  0.000000  1.389445e-02  0.000000  ...               0.0   \n",
       "82328  0.996078  0.992126  2.072552e-05  0.000100  ...               0.0   \n",
       "82329  0.000000  0.000000  0.000000e+00  0.000000  ...               0.0   \n",
       "82330  0.000000  0.000000  0.000000e+00  0.000000  ...               0.0   \n",
       "82331  0.996078  0.000000  7.719141e-03  0.000000  ...               0.0   \n",
       "\n",
       "       service_http  service_irc  service_pop3  service_radius  service_smtp  \\\n",
       "0               0.0          0.0           0.0             0.0           0.0   \n",
       "1               0.0          0.0           0.0             0.0           0.0   \n",
       "2               0.0          0.0           0.0             0.0           0.0   \n",
       "3               0.0          0.0           0.0             0.0           0.0   \n",
       "4               0.0          0.0           0.0             0.0           0.0   \n",
       "...             ...          ...           ...             ...           ...   \n",
       "82327           0.0          0.0           0.0             0.0           0.0   \n",
       "82328           0.0          0.0           0.0             0.0           0.0   \n",
       "82329           0.0          0.0           0.0             0.0           0.0   \n",
       "82330           0.0          0.0           0.0             0.0           0.0   \n",
       "82331           0.0          0.0           0.0             0.0           0.0   \n",
       "\n",
       "       service_snmp  service_ssh  service_ssl   Class  \n",
       "0               0.0          0.0          0.0  Normal  \n",
       "1               0.0          0.0          0.0  Normal  \n",
       "2               0.0          0.0          0.0  Normal  \n",
       "3               0.0          0.0          0.0  Normal  \n",
       "4               0.0          0.0          0.0  Normal  \n",
       "...             ...          ...          ...     ...  \n",
       "82327           0.0          0.0          0.0  Normal  \n",
       "82328           0.0          0.0          0.0  Normal  \n",
       "82329           0.0          0.0          0.0  Normal  \n",
       "82330           0.0          0.0          0.0  Normal  \n",
       "82331           0.0          0.0          0.0  Normal  \n",
       "\n",
       "[257673 rows x 197 columns]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Appending class column to training set\n",
    "new_train_df[\"Class\"] = tmp\n",
    "new_train_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_train_df.isnull().values.any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0        Normal\n",
       "1        Normal\n",
       "2        Normal\n",
       "3        Normal\n",
       "4        Normal\n",
       "          ...  \n",
       "82327    Normal\n",
       "82328    Normal\n",
       "82329    Normal\n",
       "82330    Normal\n",
       "82331    Normal\n",
       "Name: Class, Length: 257673, dtype: object"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train=new_train_df[\"Class\"]\n",
    "y_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.isnull().values.any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>dur</th>\n",
       "      <th>spkts</th>\n",
       "      <th>dpkts</th>\n",
       "      <th>sbytes</th>\n",
       "      <th>dbytes</th>\n",
       "      <th>rate</th>\n",
       "      <th>sttl</th>\n",
       "      <th>dttl</th>\n",
       "      <th>sload</th>\n",
       "      <th>dload</th>\n",
       "      <th>...</th>\n",
       "      <th>service_ftp</th>\n",
       "      <th>service_ftp-data</th>\n",
       "      <th>service_http</th>\n",
       "      <th>service_irc</th>\n",
       "      <th>service_pop3</th>\n",
       "      <th>service_radius</th>\n",
       "      <th>service_smtp</th>\n",
       "      <th>service_snmp</th>\n",
       "      <th>service_ssh</th>\n",
       "      <th>service_ssl</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.024634e-03</td>\n",
       "      <td>0.000470</td>\n",
       "      <td>0.000363</td>\n",
       "      <td>0.000016</td>\n",
       "      <td>0.000012</td>\n",
       "      <td>0.000074</td>\n",
       "      <td>0.988235</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.364553e-06</td>\n",
       "      <td>0.000379</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.083170e-02</td>\n",
       "      <td>0.001221</td>\n",
       "      <td>0.003449</td>\n",
       "      <td>0.000049</td>\n",
       "      <td>0.002866</td>\n",
       "      <td>0.000078</td>\n",
       "      <td>0.243137</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>1.401989e-06</td>\n",
       "      <td>0.022458</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.705215e-02</td>\n",
       "      <td>0.000658</td>\n",
       "      <td>0.001452</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.000900</td>\n",
       "      <td>0.000014</td>\n",
       "      <td>0.243137</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>2.625704e-07</td>\n",
       "      <td>0.002717</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.802737e-02</td>\n",
       "      <td>0.001033</td>\n",
       "      <td>0.001089</td>\n",
       "      <td>0.000042</td>\n",
       "      <td>0.000053</td>\n",
       "      <td>0.000014</td>\n",
       "      <td>0.243137</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>4.576117e-07</td>\n",
       "      <td>0.000150</td>\n",
       "      <td>...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>7.490901e-03</td>\n",
       "      <td>0.000845</td>\n",
       "      <td>0.000545</td>\n",
       "      <td>0.000036</td>\n",
       "      <td>0.000018</td>\n",
       "      <td>0.000033</td>\n",
       "      <td>0.996078</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>1.429776e-06</td>\n",
       "      <td>0.000178</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82327</th>\n",
       "      <td>8.333335e-08</td>\n",
       "      <td>0.000094</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000006</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.996078</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.389445e-02</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82328</th>\n",
       "      <td>1.843502e-02</td>\n",
       "      <td>0.001785</td>\n",
       "      <td>0.000726</td>\n",
       "      <td>0.001257</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.996078</td>\n",
       "      <td>0.992126</td>\n",
       "      <td>2.072552e-05</td>\n",
       "      <td>0.000100</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82329</th>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82330</th>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82331</th>\n",
       "      <td>1.500000e-07</td>\n",
       "      <td>0.000094</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000006</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.111111</td>\n",
       "      <td>0.996078</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.719141e-03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>257673 rows × 196 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                dur     spkts     dpkts    sbytes    dbytes      rate  \\\n",
       "0      2.024634e-03  0.000470  0.000363  0.000016  0.000012  0.000074   \n",
       "1      1.083170e-02  0.001221  0.003449  0.000049  0.002866  0.000078   \n",
       "2      2.705215e-02  0.000658  0.001452  0.000024  0.000900  0.000014   \n",
       "3      2.802737e-02  0.001033  0.001089  0.000042  0.000053  0.000014   \n",
       "4      7.490901e-03  0.000845  0.000545  0.000036  0.000018  0.000033   \n",
       "...             ...       ...       ...       ...       ...       ...   \n",
       "82327  8.333335e-08  0.000094  0.000000  0.000006  0.000000  0.200000   \n",
       "82328  1.843502e-02  0.001785  0.000726  0.001257  0.000024  0.000024   \n",
       "82329  0.000000e+00  0.000000  0.000000  0.000002  0.000000  0.000000   \n",
       "82330  0.000000e+00  0.000000  0.000000  0.000002  0.000000  0.000000   \n",
       "82331  1.500000e-07  0.000094  0.000000  0.000006  0.000000  0.111111   \n",
       "\n",
       "           sttl      dttl         sload     dload  ...  service_ftp  \\\n",
       "0      0.988235  1.000000  2.364553e-06  0.000379  ...          0.0   \n",
       "1      0.243137  0.992126  1.401989e-06  0.022458  ...          0.0   \n",
       "2      0.243137  0.992126  2.625704e-07  0.002717  ...          0.0   \n",
       "3      0.243137  0.992126  4.576117e-07  0.000150  ...          1.0   \n",
       "4      0.996078  0.992126  1.429776e-06  0.000178  ...          0.0   \n",
       "...         ...       ...           ...       ...  ...          ...   \n",
       "82327  0.996078  0.000000  1.389445e-02  0.000000  ...          0.0   \n",
       "82328  0.996078  0.992126  2.072552e-05  0.000100  ...          0.0   \n",
       "82329  0.000000  0.000000  0.000000e+00  0.000000  ...          0.0   \n",
       "82330  0.000000  0.000000  0.000000e+00  0.000000  ...          0.0   \n",
       "82331  0.996078  0.000000  7.719141e-03  0.000000  ...          0.0   \n",
       "\n",
       "       service_ftp-data  service_http  service_irc  service_pop3  \\\n",
       "0                   0.0           0.0          0.0           0.0   \n",
       "1                   0.0           0.0          0.0           0.0   \n",
       "2                   0.0           0.0          0.0           0.0   \n",
       "3                   0.0           0.0          0.0           0.0   \n",
       "4                   0.0           0.0          0.0           0.0   \n",
       "...                 ...           ...          ...           ...   \n",
       "82327               0.0           0.0          0.0           0.0   \n",
       "82328               0.0           0.0          0.0           0.0   \n",
       "82329               0.0           0.0          0.0           0.0   \n",
       "82330               0.0           0.0          0.0           0.0   \n",
       "82331               0.0           0.0          0.0           0.0   \n",
       "\n",
       "       service_radius  service_smtp  service_snmp  service_ssh  service_ssl  \n",
       "0                 0.0           0.0           0.0          0.0          0.0  \n",
       "1                 0.0           0.0           0.0          0.0          0.0  \n",
       "2                 0.0           0.0           0.0          0.0          0.0  \n",
       "3                 0.0           0.0           0.0          0.0          0.0  \n",
       "4                 0.0           0.0           0.0          0.0          0.0  \n",
       "...               ...           ...           ...          ...          ...  \n",
       "82327             0.0           0.0           0.0          0.0          0.0  \n",
       "82328             0.0           0.0           0.0          0.0          0.0  \n",
       "82329             0.0           0.0           0.0          0.0          0.0  \n",
       "82330             0.0           0.0           0.0          0.0          0.0  \n",
       "82331             0.0           0.0           0.0          0.0          0.0  \n",
       "\n",
       "[257673 rows x 196 columns]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "combined_data_X = new_train_df.drop('Class', 1)\n",
    "combined_data_X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "oos_pred = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import StratifiedKFold\n",
    "from imblearn.over_sampling import RandomOverSampler\n",
    "oversample = RandomOverSampler(sampling_strategy='minority')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kfold = StratifiedKFold(n_splits=6,shuffle=True,random_state=42)\n",
    "kfold.get_n_splits(combined_data_X,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/lib/python3.7/site-packages/ipykernel_launcher.py:3: UserWarning: Update your `Conv1D` call to the Keras 2 API: `Conv1D(64, kernel_size=64, activation=\"relu\", input_shape=(196, 1), padding=\"same\")`\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n",
      "/opt/conda/lib/python3.7/site-packages/ipykernel_launcher.py:4: UserWarning: Update your `MaxPooling1D` call to the Keras 2 API: `MaxPooling1D(pool_size=10)`\n",
      "  after removing the cwd from sys.path.\n",
      "/opt/conda/lib/python3.7/site-packages/ipykernel_launcher.py:8: UserWarning: Update your `MaxPooling1D` call to the Keras 2 API: `MaxPooling1D(pool_size=5)`\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "batch_size = 32\n",
    "model = Sequential()\n",
    "model.add(Convolution1D(64, kernel_size=64, border_mode=\"same\",activation=\"relu\",input_shape=(196, 1)))\n",
    "model.add(MaxPooling1D(pool_length=(10)))\n",
    "model.add(BatchNormalization())\n",
    "model.add(Bidirectional(LSTM(64, return_sequences=False)))\n",
    "model.add(Reshape((128, 1), input_shape = (128, )))\n",
    "model.add(MaxPooling1D(pool_length=(5)))\n",
    "model.add(BatchNormalization())\n",
    "model.add(Bidirectional(LSTM(128, return_sequences=False)))\n",
    "#model.add(Reshape((128, 1), input_shape = (128, )))\n",
    "model.add(Dropout(0.6))\n",
    "model.add(Dense(10))\n",
    "model.add(Activation('softmax'))\n",
    "model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(None, 196, 64)\n",
      "(None, 19, 64)\n",
      "(None, 19, 64)\n",
      "(None, 128)\n",
      "(None, 128, 1)\n",
      "(None, 25, 1)\n",
      "(None, 25, 1)\n",
      "(None, 256)\n",
      "(None, 256)\n",
      "(None, 10)\n",
      "(None, 10)\n"
     ]
    }
   ],
   "source": [
    "for layer in model.layers:\n",
    "    print(layer.output_shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential_1\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "conv1d_1 (Conv1D)            (None, 196, 64)           4160      \n",
      "_________________________________________________________________\n",
      "max_pooling1d_1 (MaxPooling1 (None, 19, 64)            0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_1 (Batch (None, 19, 64)            256       \n",
      "_________________________________________________________________\n",
      "bidirectional_1 (Bidirection (None, 128)               66048     \n",
      "_________________________________________________________________\n",
      "reshape_1 (Reshape)          (None, 128, 1)            0         \n",
      "_________________________________________________________________\n",
      "max_pooling1d_2 (MaxPooling1 (None, 25, 1)             0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_2 (Batch (None, 25, 1)             4         \n",
      "_________________________________________________________________\n",
      "bidirectional_2 (Bidirection (None, 256)               133120    \n",
      "_________________________________________________________________\n",
      "dropout_1 (Dropout)          (None, 256)               0         \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 10)                2570      \n",
      "_________________________________________________________________\n",
      "activation_1 (Activation)    (None, 10)                0         \n",
      "=================================================================\n",
      "Total params: 206,158\n",
      "Trainable params: 206,028\n",
      "Non-trainable params: 130\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train index: [     0      1      2 ... 257669 257670 257672]\n",
      "test index: [     9     14     15 ... 257658 257668 257671]\n",
      "Normal            77500\n",
      "Generic           49059\n",
      "Exploits          37104\n",
      "Fuzzers           20205\n",
      "DoS               13628\n",
      "Reconnaissance    11656\n",
      "Analysis           2231\n",
      "Backdoor           1940\n",
      "Shellcode          1259\n",
      "Worms               145\n",
      "Name: Class, dtype: int64\n",
      "Normal            77500\n",
      "Worms             77500\n",
      "Generic           49059\n",
      "Exploits          37104\n",
      "Fuzzers           20205\n",
      "DoS               13628\n",
      "Reconnaissance    11656\n",
      "Analysis           2231\n",
      "Backdoor           1940\n",
      "Shellcode          1259\n",
      "Name: Class, dtype: int64\n",
      "Train on 292082 samples, validate on 42946 samples\n",
      "Epoch 1/9\n",
      "292082/292082 [==============================] - 511s 2ms/step - loss: 0.4425 - accuracy: 0.8327 - val_loss: 0.5453 - val_accuracy: 0.7850\n",
      "Epoch 3/9\n",
      "292082/292082 [==============================] - 514s 2ms/step - loss: 0.3919 - accuracy: 0.8482 - val_loss: 0.5086 - val_accuracy: 0.7998\n",
      "Epoch 6/9\n",
      "292083/292083 [==============================] - 514s 2ms/step - loss: 0.3261 - accuracy: 0.8673 - val_loss: 0.4377 - val_accuracy: 0.8207\n",
      "Epoch 7/9\n",
      "292083/292083 [==============================] - 507s 2ms/step - loss: 0.3250 - accuracy: 0.8673 - val_loss: 0.4425 - val_accuracy: 0.8185\n",
      "Epoch 8/9\n",
      "243616/292083 [========================>.....] - ETA: 1:22 - loss: 0.3154 - accuracy: 0.8709"
     ]
    }
   ],
   "source": [
    "for train_index, test_index in kfold.split(combined_data_X,y_train):\n",
    "    train_X, test_X = combined_data_X.iloc[train_index], combined_data_X.iloc[test_index]\n",
    "    train_y, test_y = y_train.iloc[train_index], y_train.iloc[test_index]\n",
    "    \n",
    "    print(\"train index:\",train_index)\n",
    "    print(\"test index:\",test_index)\n",
    "    print(train_y.value_counts())\n",
    "    \n",
    "    train_X_over,train_y_over= oversample.fit_resample(train_X, train_y)\n",
    "    print(train_y_over.value_counts())\n",
    "    \n",
    "    x_columns_train = new_train_df.columns.drop('Class')\n",
    "    x_train_array = train_X_over[x_columns_train].values\n",
    "    x_train_1=np.reshape(x_train_array, (x_train_array.shape[0], x_train_array.shape[1], 1))\n",
    "    \n",
    "    dummies = pd.get_dummies(train_y_over) # Classification\n",
    "    outcomes = dummies.columns\n",
    "    num_classes = len(outcomes)\n",
    "    y_train_1 = dummies.values\n",
    "    \n",
    "    x_columns_test = new_train_df.columns.drop('Class')\n",
    "    x_test_array = test_X[x_columns_test].values\n",
    "    x_test_2=np.reshape(x_test_array, (x_test_array.shape[0], x_test_array.shape[1], 1))\n",
    "    \n",
    "    dummies_test = pd.get_dummies(test_y) # Classification\n",
    "    outcomes_test = dummies_test.columns\n",
    "    num_classes = len(outcomes_test)\n",
    "    y_test_2 = dummies_test.values\n",
    "    \n",
    "   \n",
    "    model.fit(x_train_1, y_train_1,validation_data=(x_test_2,y_test_2), epochs=9)\n",
    "    \n",
    "    pred = model.predict(x_test_2)\n",
    "    pred = np.argmax(pred,axis=1)\n",
    "    y_eval = np.argmax(y_test_2,axis=1)\n",
    "    score = metrics.accuracy_score(y_eval, pred)\n",
    "    oos_pred.append(score)\n",
    "    print(\"Validation score: {}\".format(score))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.808131141433428,\n",
       " 0.8125087318958693,\n",
       " 0.8186559865878079,\n",
       " 0.8198626149726395,\n",
       " 0.8220514611712656,\n",
       " 0.823285597857725]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "oos_pred "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Normal            15500\n",
       "Generic            9812\n",
       "Exploits           7421\n",
       "Fuzzers            4041\n",
       "DoS                2725\n",
       "Reconnaissance     2331\n",
       "Analysis            446\n",
       "Backdoor            388\n",
       "Shellcode           252\n",
       "Worms                29\n",
       "Name: Class, dtype: int64"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_y.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Analysis', 'Backdoor', 'DoS', 'Exploits', 'Fuzzers', 'Generic',\n",
       "       'Normal', 'Reconnaissance', 'Shellcode', 'Worms'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dummies_test.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import confusion_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "confussion_matrix=confusion_matrix(y_eval, pred, labels=[0, 1, 2, 3, 4, 5,6, 7, 8, 9])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[   28,     0,     6,   357,     4,     0,    51,     0,     0,\n",
       "            0],\n",
       "       [    0,    29,    14,   335,     2,     0,     1,     5,     2,\n",
       "            0],\n",
       "       [    0,     2,   267,  2377,    12,     3,    19,    20,    25,\n",
       "            0],\n",
       "       [    0,     4,   141,  6831,    88,    16,   123,   163,    31,\n",
       "           24],\n",
       "       [    0,     0,    12,   515,  2005,     2,  1433,    57,    13,\n",
       "            4],\n",
       "       [    0,     1,    23,   164,    10,  9600,     4,     4,     3,\n",
       "            3],\n",
       "       [    2,     1,    19,   144,   584,     3, 14647,    85,    11,\n",
       "            4],\n",
       "       [    0,     2,    19,   453,    13,     3,    49,  1788,     4,\n",
       "            0],\n",
       "       [    0,     0,     4,    37,    15,     4,    24,    30,   137,\n",
       "            1],\n",
       "       [    0,     0,     0,     5,     0,     0,     0,     0,     0,\n",
       "           24]])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "confussion_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "\n",
    "def plot_confusion_matrix(cm,\n",
    "                          target_names,\n",
    "                          title='Confusion matrix',\n",
    "                          cmap=None,\n",
    "                          normalize=True):\n",
    "    \n",
    "    import matplotlib.pyplot as plt\n",
    "    import numpy as np\n",
    "    import itertools\n",
    "\n",
    "    accuracy = np.trace(cm) / float(np.sum(cm))\n",
    "    misclass = 1 - accuracy\n",
    "\n",
    "    if cmap is None:\n",
    "        cmap = plt.get_cmap('Blues')\n",
    "\n",
    "    plt.figure(figsize=(8, 6))\n",
    "    plt.imshow(cm, interpolation='nearest', cmap=cmap)\n",
    "    plt.title(title)\n",
    "    plt.colorbar()\n",
    "\n",
    "    if target_names is not None:\n",
    "        tick_marks = np.arange(len(target_names))\n",
    "        plt.xticks(tick_marks, target_names, rotation=45)\n",
    "        plt.yticks(tick_marks, target_names)\n",
    "\n",
    "    if normalize:\n",
    "        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n",
    "\n",
    "\n",
    "    thresh = cm.max() / 1.5 if normalize else cm.max() / 2\n",
    "    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
    "        if normalize:\n",
    "            plt.text(j, i, \"{:0.4f}\".format(cm[i, j]),\n",
    "                     horizontalalignment=\"center\",\n",
    "                     color=\"white\" if cm[i, j] > thresh else \"black\")\n",
    "        else:\n",
    "            plt.text(j, i, \"{:,}\".format(cm[i, j]),\n",
    "                     horizontalalignment=\"center\",\n",
    "                     color=\"white\" if cm[i, j] > thresh else \"black\")\n",
    "\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.ylabel('True label')\n",
    "    plt.xlabel('Predicted label\\naccuracy={:0.4f}; misclass={:0.4f}'.format(accuracy, misclass))\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_confusion_matrix(cm           = confussion_matrix, \n",
    "                      normalize    = False,\n",
    "                      target_names = ['Analysis', 'Backdoor', 'DoS', 'Exploits', 'Fuzzers', 'Generic','Normal', 'Reconnaissance', 'Shellcode', 'Worms'],\n",
    "                      title        = \"Confusion Matrix\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "# x axis values \n",
    "x = [2,4,6,8,10] \n",
    "# corresponding y axis values \n",
    "y = [95,79,93,86,96] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plotting the points  \n",
    "plt.plot(x, y) \n",
    "\n",
    "# naming the x axis \n",
    "plt.xlabel('K-Value') \n",
    "\n",
    "# naming the y axis \n",
    "plt.ylabel('Detection Rate %') \n",
    "  \n",
    "# giving a title to my graph \n",
    "plt.title('Detection Rate of Binary on UNSW-NB15') \n",
    "  \n",
    "# function to show the plot \n",
    "plt.show() "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
